//
//  YXBaseInfoProtocol.h
//  YXImageBrowserDemo
//
//  Created by guo peng huang on 2021/5/18.
//

#import <UIKit/UIKit.h>
#import "YXAuxiliaryViewHandler.h"
#import "YXWebImageMediator.h"

NS_ASSUME_NONNULL_BEGIN

@protocol YXBaseInfoProtocol <NSObject>

@optional

/// 当前的方向
@property (nonatomic, copy) UIDeviceOrientation(^yx_currentOrientation)(void);

/// 根据方向获取容器大小
@property (nonatomic, copy) CGSize(^yx_containerSize)(UIDeviceOrientation orientation);

/// 容器视图 (可在上面添加子视图)
@property (nonatomic, weak) UIView *yx_containerView;

/// 辅助视图处理器
@property (nonatomic, copy) id<YXAuxiliaryViewHandlerProtocol>(^yx_auxiliaryViewHandler)(void);
//
///// 图片下载缓存相关中介者
@property (nonatomic, copy) id<YXWebImageMediator>(^yx_webImageMediator)(void);

/// 当前页码
@property (nonatomic, copy) NSInteger(^yx_currentPage)(void);

/// 总页码数量
@property (nonatomic, copy) NSInteger(^yx_totalPage)(void);

/// 判断当前展示的 cell 是否恰好在屏幕中间
@property (nonatomic, copy) BOOL(^yx_cellIsInCenter)(void);

/// 是否正在转场
@property (nonatomic, copy) BOOL(^yx_isTransitioning)(void);
/// 是否正在展示过程转场
@property (nonatomic, copy) BOOL(^yx_isShowTransitioning)(void);
/// 是否正在隐藏过程转场
@property (nonatomic, copy) BOOL(^yx_isHideTransitioning)(void);

/// 是否正在旋转
@property (nonatomic, copy) BOOL(^yx_isRotating)(void);

/// 背景视图 (也就是 YXImageBrower 对象，不可在上面添加子视图。作用：一是可以更改透明度和颜色，入场和出场动效有用；二是可以用来比较内存指针，在做不同实例差异化功能时可能有用，虽然不提倡这么做)
@property (nonatomic, weak) __kindof UIView *yx_backView;

/// 集合视图
@property (nonatomic, copy) __kindof UICollectionView *(^yx_collectionView)(void);

@end

NS_ASSUME_NONNULL_END
